package com.hu.demo02;
/*
静态代理模式
 真实对象和代理对象都实现一个接口，代理对象代理真实角色
 好处：
 1.代理对象可以做很多真实对象做不了的事情。
 2.真实对象可以专注于做自己的事
 */
public class StaticProxy {
    public static void main(String[] args) {
        // 原始写法
        //new you("呼").HappyMarry();

        //使用婚庆公司代理
        new WeddingCompany(new you("呼锅锅")).HappyMarry();
    }
}
interface Marry{
    // 喜事
    void HappyMarry();
}
// 真实角色
class you implements Marry{
    private String name;
    you(String name) {
        this.name=name;
    }

    @Override
    public void HappyMarry() {
        System.out.println(name+"要结婚啦!");
    }
}
// 婚庆公司代理,帮助角色结婚
class WeddingCompany implements Marry{
    // 代理真实角色
    private Marry target;
    WeddingCompany(Marry target) {
        this.target = target;
    }
    @Override
    public void HappyMarry() {
          before();
          this.target.HappyMarry();
          after();
    }
    public void before(){
        System.out.println("婚前，收百分之六十的款");
    }
    public void after(){
        System.out.println("婚后，收尾款");
    }
}